package com.zch.wrapper;

@SuppressWarnings({"all"})
public class Integer01 {
    public static void main(String[] args) {

        //jdk5前是手动装箱和拆箱
        //手动装箱 int -> Integer
        int n1 = 100;
        Integer integer = Integer.valueOf(n1);
        Integer integer1 = new Integer(n1);

        //手动拆箱 Integer -> int
        int a = integer.intValue();

        //jdk5后就可以自动装箱和自动拆箱
        //自动装箱
        int n2 = 200;
        Integer integer2 = n2; //底层使用的是Integer.valueOf(n2)

        //自动拆箱
        int n3 = integer2; //底层使用的是integer2.intValue()

        //面试题
        Object obj = true ? new Integer(1) : new Double(2.0); //三元运算符是一个整体，返回值自动提升精度
        System.out.println(obj); //输出1.0

        //面试题
        Integer i = new Integer(1);
        Integer j = new Integer(1);
        System.out.println(i == j); //false

        //-128~127就返回的是缓存区中的同一个对象，超出范围就new
        Integer m = 1;
        Integer n = 1;
        System.out.println(m == n); //true

        Integer x = 128;
        Integer y = 128;
        System.out.println(x == y); //false

        //只要有基本数据类型，判断的是值是否相等
        Integer i1 = 127;
        int i2 = 127;
        System.out.println(i1 == i2); //true

    }
}
